AWS Elastic BeanstalkでWordPressを始める
ご挨拶
はじめまして、今回初めてブログ書くとくがみあけりです。 3本書くと弊社会長からカレーをごちそうしてもらえるということでブログを書くことにしました。
AWS Elastic Beanstalk??
みなさん、AWS ElasticBeanstalkは使ってますか? データベースサーバであれば、EC2にMySQLをインストールして運用するよりもRDSを選択する人は沢山見かけますが、 EC2にApacheをインストールして運用しないで、ElasticBeanstalkを選択している人はそこまで多くないんじゃないかと思います。 おそらくですが、PHP,Rubyの対応が最近だったことと、使い方がよくわからないのが原因ではないでしょうか。 そこで今回はWordPressの環境を構築してみて、簡単に使えてメンテナンスが楽になることを確かめたいと思います。
次回はカスタムAMIを使ってEC-CUBEを運用するまでをやりますので、お楽しみに。
AWS Elastic Beanstalkとは
ElasticBeanstalkはロードバランサー、Webサーバ/ミドルウェア、データベースサーバ、それらの監視・通知が簡単に構築出来るサービスです。 BeanstalkではまずApplicationを作成し、その中でEnvironmentを複数持つことが出来ます。EnvironmentはそれぞれにURLを与えられているので、このEnvironmentは開発用、このEnvironmentは本番用といった使い方や、このEnvironmentはユーザが使う側、このEnvironmentは管理用アプリケーション といったことも出来ます。
実際にWordPressを動かすところまでを順を追ってやっていきます。 コマンドラインツールのebを使った方が楽だったりしますが、今回は流れを目で追って行きやすいようにManagementConsoleでの操作でやっていきます。
Application,Environmentの作成
Application Nameと、ContainerTypeを選択します。 Application SourceはとりあえずUse the Smaple Applicationで良いです。
次に進むと、EnvironmentName:とURLの指定が出来ます。 Nameにはproductionなど本番っぽい名前を入れれば良いと思います。
次はInstance TypeとKeyPairといったEC2(AutoScalingのLaunchConfigration)の設定とSNSの通知場所、ELBのHealthCheckのURLを設定出来ます。
次にRDSの設定をします。
確認して大丈夫であれば、Finishです。
EnvironmentsのEventsのタブで現在の状況を確認できます。
Environmentは作成すると自動的に
- S3にBucketを作成
- SNSトピックの作成
- ELBの作成
- セキュリティグループの作成
- RDSの立ちあげ(任意)
- AutoScalingの設定
・LaunchConfigurationの作成
・AutoScalingGroupの作成
・ScalingPolicyの作成(スケールイン・アウトの2種類)
・CloudWatchのALARMにScalingPolicyを設定 - EC2の立ちあげ
という作業が自動で行われます。 もしこの中に一つでも分からない事があったらぜひElasticBeanstalkを使いましょう。
今回は 64bit AmazonLinuxで、PHP5.3のEnvironmentを作りました。 作るときにメールアドレスを設定して、Confirm subscriptionしておけば、Environmentが立ち上がった時にメールが届きます。 立ち上がるとSample ApplicationというVersionが用意されていますので、見てみましょう。
ManagementConsoleでEnvironmentのOverviewタブにURLがあるので、そこを開きます。
これがSample Aplpicationです。
Elastic Beanstalkのドキュメントなどへのリンクがあります。
wordpressのインストール
このSampleApplicationは今回は特に必要ないので、ここにWordPressを入れてみます。
ここからダウンロードしてきたWordPressのzipを一度解凍し、wordpress/wp-config-sample.phpをコピーしてwordpress/wp-config.phpを作ります。
このあたりの設定をEnvironment作った時に立ち上がったRDSの情報を指定します。 RDSのエンドポイントはEdit Configurationからも確認することが出来ます。 ユーザ名、パスワードはEnviromentを作るときに指定したものが使えます。 データベース名はデフォルトでebdbというのが作られています。
wp-config.phpを作ったらもう一度wordpressディレクトリごと圧縮し、デプロイします。
ManagementConsoleのActionsというところからDeploy a Different Versionを選択します。
するとこんなダイアログが開くので、ここで「Upload and deploy a new version」を選択し、Upload Existing Applicationで先ほど作ったzipをアップロードします。
そのままだとwordpressというディレクトリの下にindex.phpがあるので、wordpressというディレクトリをドキュメントルートにしてしまいましょう。 ActionsからEdit and Load Configurationを選択します。
こんなダイアログが出てくるので、 ContainerのタブからDocumentRootを変更します。
ついでなので、ログをS3に入れるようにもしておきましょう。 さらについでに、wordpressはインストールが終わるまでは、/にアクセスしても302で/wp-admin/install.phpにリダイレクトされるようになっていますので、ELBのHealthCheckに引っかからないように、少しだけ工夫が必要です。 インストールが終わるまでは、/readme.htmlをhealthcheck URLに指定しておいて、インストールが終わったら/に戻すといったようなやり方があります。
WordPressのインストーラにアクセス出来れば、名前などを設定しておしまいです。
アップロードされた画像がどうスケーリングされるのかなどの事はまだありますが、ひとまずこれでWordPressが無事に動くようになりました。
さいごに
一度環境を作ってしまえばメンテナンスに気を使う事がもの凄く少なくなるので、Elastic BeanstalkはこれからWebサイトを立ち上げる時には要検討です。